package com.gmlive.common.sample.pay

import android.os.Bundle
import android.widget.Toast
import com.alipay.sdk.app.PayTask
import com.gmlive.common.gmpay.GmPay
import com.gmlive.common.gmpay.alipay.AliPay
import com.gmlive.common.gmpay.alipay.AlipayInfoImpl
import com.gmlive.common.gmpay.callback.IPayCallback
import com.gmlive.common.gmpay.wechat.wxpay.WXPay
import com.gmlive.common.gmpay.wechat.wxpay.WXPayInfoImpl
import com.gmlive.common.sample.R
import com.gmlive.common.ui.app.IkCompatActivity
import com.gmlive.common.ui.app.annotation.Immerse
import kotlinx.android.synthetic.main.activity_pay.*

@Immerse(darkStatusBar = true)
class PayActivity : IkCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_pay)

        wechat_pay.setOnClickListener { wxpay() }

        alipay.setOnClickListener { alipay() }
    }

    private fun wxpay() { //实例化微信支付策略
        val wxPay: WXPay = WXPay.getInstance()
        //构造微信订单实体。一般都是由服务端直接返回。
        val wxPayInfoImpli = WXPayInfoImpl()
        wxPayInfoImpli.setTimestamp("")
        wxPayInfoImpli.setSign("")
        wxPayInfoImpli.setPrepayId("")
        wxPayInfoImpli.setPartnerid("")
        wxPayInfoImpli.setAppid("")
        wxPayInfoImpli.setNonceStr("")
        wxPayInfoImpli.setPackageValue("")
        //策略场景类调起支付方法开始支付，以及接收回调。
        GmPay.pay(wxPay, this, wxPayInfoImpli, object : IPayCallback {
            override fun success() {
                toast("支付成功")
            }

            override fun failed(code: Int, message: String?) {
                toast("支付失败")
            }

            override fun cancel() {
                toast("支付取消")
            }
        })
    }

    private fun alipay() { //实例化支付宝支付策略
        val payTask = PayTask(this)
        val aliPay = AliPay()
        //构造支付宝订单实体。一般都是由服务端直接返回。
        val alipayInfoImpli = AlipayInfoImpl()
        alipayInfoImpli.setOrderInfo("")
        //策略场景类调起支付方法开始支付，以及接收回调。
        GmPay.pay(aliPay, this, alipayInfoImpli, object : IPayCallback {
            override fun success() {
                toast("支付成功")
            }

            override fun failed(code: Int, message: String?) {
                toast("支付失败")
            }

            override fun cancel() {
                toast("支付取消")
            }
        })
    }

    private fun toast(context: String) {
        Toast.makeText(this, context, Toast.LENGTH_LONG).show()
    }
}
